package com.cn.wanxi.service.impl;


import com.cn.wanxi.dao.UserDao;
import com.cn.wanxi.dao.impl.UserImpl;
import com.cn.wanxi.model.ResultModel;
import com.cn.wanxi.model.UserModel;
import com.cn.wanxi.service.UserService;

import java.util.List;

public class UserServiceImpl implements UserService {

    private UserDao userDao = new UserImpl();

    /**
     * 这里是登陆逻辑判断
     * 1.判断验证码是否正确，如果不正确，则返回错误验证码error-code
     * 2.如果正确，则开始去数据库里面查询
     * 3.如果用户名和密码错误，则返回error
     * 4.如果查询出有值，标示用户名和密码匹配，可以进行登陆
     * ---------------------
     * 如果代码写成多个if else 嵌套，编码不规范，不要写else  switch
     *
     * @param userModel
     * @return
     */
    @Override
    public ResultModel login(UserModel userModel) {
//        ResultModel resultModel = new ResultModel();
        if (!userModel.getCode().equals(userModel.getSessionCode())) {
            //给前端提示，验证码错误，请重新输入验证码
//            resultModel.setMsg("error-code");
            return ResultModel.getModel("error-code");
        }
        //这里就直接去数据库查询用户名和密码是否匹配
//            UserService userService = new UserServiceImpl();
//            String res = userService.login(userModel);
//            我们应该根据用户名和密码去数据库里面查询数据
//            如果查询出来是有一条数据，那么我们将一条数据封装到model，
//            如果没有数据，则返回一个null
        UserModel model = userDao.findByUsernameAndPassword(userModel);
        if (model == null) {
            // 给前端提示，用户名或密码错误，请重新输入用户名和密码
//            resultModel.setMsg("error");
            return ResultModel.getModel("error");
        }
        // 给前端提示，用户名和密码正确可以直接跳转到管理页面
//        resultModel.setMsg("success");
        return ResultModel.getModel("success");
    }

    @Override
    public ResultModel findAll(UserModel model) {

        List<UserModel> list = userDao.findAll(model);
        int count = userDao.getCount(model);
        return ResultModel.getModel(list, count);
    }

    @Override
    public ResultModel delete(UserModel model) {
        int count = userDao.delete(model);
//        String msg = count == 1 ? "success" : "error";
        return ResultModel.getModel(count);
    }

    @Override
    public ResultModel add(UserModel model) {
//        int count = userDao.add(model);
//        String msg = count == 1 ? "success" : "error";
        return ResultModel.getModel(userDao.add(model));
    }

    @Override
    public ResultModel getCount(UserModel model) {
        return ResultModel.getModel(userDao.getCount(model));
    }

    @Override
    public ResultModel updateSex(UserModel model) {
        return ResultModel.getModel(userDao.updateSex(model));
    }

    @Override
    public ResultModel updateEnable(UserModel model) {
        return ResultModel.getModel(userDao.updateEnable(model));
    }

    @Override
    public ResultModel findById(UserModel model) {

        return ResultModel.getModel(userDao.findById(model));

    }

    @Override
    public ResultModel update(UserModel userModel) {
        return ResultModel.getModel(userDao.update(userModel));
    }
}
